package cn.lxm.samples.auth_server.config.custom.bussiness;

import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author LXM
 * @Title: oauth2
 * @Description:在标准Web应用程序中，当客户端尝试访问安全资源而不进行身份验证时，可以自动触发身份验证过程 - 这通常通过重定向到登录页面来完成，以便用户可以输入凭据。但是，对于REST Web服务，此行为没有多大意义 -
 * 身份验证应该仅通过对正确URI的请求来完成，并且如果用户未经过身份验证，则所有其他请求应该仅使用
 * 401 UNAUTHORIZED状态代码失败。
 * @date 2018/8/14上午11:28
 */
@Component("restAuthenticationEntryPoint")
public class RestAuthenticationEntryPoint
        implements AuthenticationEntryPoint {

    @Override
    public void commence(
            HttpServletRequest request,
            HttpServletResponse response,
            AuthenticationException authException) throws IOException {

        response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
    }
}